開發階段若資料表有建立關聯
在整理資料表內容的時候會因為關聯而綁手綁腳
拖慢開發速度
為何要建立關聯
這樣子進行資料匯入的時候會有問題
為何要多做這種事情來限制自己的行為
首先要回到原點
為何資料表與資料表之間要有關聯
關聯可以保持資料的完整性
讓資料表不會出現沒有意義的資料內容(髒資料)
朝向最佳化的資料庫設計邁進
通常在開發階段不建立關聯
上線後基本上都不會補上去
到時資料產生異常時就會耗費更多的成本進行整理
資料表間有設定關聯
能讓接手或是日後再訓練開發人員時
更快了解資料表間的相依關係
不過實務上
小心設定外來鍵參考為 ON DELETE CASCADE
當相依性關係龐大時
若不小心將主要資料刪除時
其他相依的資料列就會自動刪除
沒有關聯的資料表示可以被 TRUNCATE 的
然而 TRUNCATE 與 DELETE 一個重要的差異
TRUNCATE 是不會進事件紀錄
故無法使用事件紀錄來還原到最近的時間點
當然這個指令可透過權限設定等方式進行限制
有設定關聯的資料表變相可避免無心或惡意情況下對資料表執行 TRUNCATE 指令
讓資料表不會出現沒有意義的資料內容(髒資料)
為何會有髒資料?? 為何會有機會給髒資料的機會寫入到資料庫??